﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace StockVentas
{
    public partial class frmStockMovInforme : Form
    {
        public DataSet dsStockMov;
        DataTable tblArticulos;
        DataTable tblStockMov;
        DataTable tblStockMovDetalle;
        DataTable tblLocales;
        DataView viewStockMov;   
        public int idLocal;
        public DateTime fechaDesde;
        public DateTime fechaHasta;
        string strFechaDesde;
        string strFechaHasta;
        public string opcVista;
        public string opcMov;
        public string tipo;
        int PK;
        frmProgress progreso;
        string formularioOrigen;
        string accionProgress;
        private int? codigoError = null;



        public frmStockMovInforme()
        {
            InitializeComponent();
        }

        private void frmStockMovInforme_Load(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;
            string strFilePath = Application.StartupPath + "\\Datasets_xml\\";
            if (File.Exists(strFilePath + "Articulos.xml"))
            {
                tblArticulos = new DataTable();
                tblArticulos.ReadXml(strFilePath + "Articulos.xml");
                tblArticulos.AcceptChanges();
            }
            strFechaDesde = fechaDesde.ToString("yyyy-MM-dd 00:00:00");
            strFechaHasta = fechaHasta.ToString("yyyy-MM-dd 00:00:00");
            formularioOrigen = "frmStockMovInforme";
            accionProgress = "cargar";
            btnModifcar.Enabled = false;
            btnBorrar.Enabled = false;
            if (opcVista == "pantalla")
            {
                if (opcMov == "entradas")
                {
                    if (tipo == "movimientos")
                    {
                        progreso = new frmProgress(strFechaDesde, strFechaHasta, idLocal, tipo, opcMov, formularioOrigen, accionProgress);
                        progreso.ShowDialog();
                        dsStockMov = frmProgress.dsStockMov;
                    }
                    else // compensaciones
                    {
                        btnModifcar.Enabled = true;
                        btnBorrar.Enabled = true;
                        label1.Text = "Compensaciones de stock";
                        label2.Text = "Detalle de compensaciones";
                        progreso = new frmProgress(strFechaDesde, strFechaHasta, idLocal, tipo, opcMov, formularioOrigen, accionProgress);
                        progreso.ShowDialog();
                        dsStockMov = frmProgress.dsStockMov;
                        this.Text = "Informe de compensaciones de stock";
                    }
                }
                else if (opcMov == "salidas")
                {
                    progreso = new frmProgress(strFechaDesde, strFechaHasta, idLocal, tipo, opcMov, formularioOrigen, accionProgress);
                    progreso.ShowDialog();
                    dsStockMov = frmProgress.dsStockMov;
                }
                else // todos los movimientos
                {
                    progreso = new frmProgress(strFechaDesde, strFechaHasta, idLocal, tipo, opcMov, formularioOrigen, accionProgress);
                    progreso.ShowDialog();
                    dsStockMov = frmProgress.dsStockMov;
                }
                if (dsStockMov == null) return; // no hay conexion
                tblStockMov = dsStockMov.Tables[0];
                tblStockMov.TableName = "StockMov";
                tblStockMovDetalle = dsStockMov.Tables[1];
                tblStockMovDetalle.TableName = "StockMovDetalle";
            }
            else // impresora
            {

            }

            if (File.Exists(strFilePath + "Locales.xml"))
            {
                tblLocales = new DataTable();
                tblLocales.ReadXml(strFilePath + "Locales.xml");
                tblLocales.PrimaryKey = new DataColumn[] { tblLocales.Columns["IdLocalLOC"] };
                tblLocales.AcceptChanges();
            }

            tblStockMov.Columns.Add("Origen", typeof(string));
            tblStockMov.Columns.Add("Destino", typeof(string));
            viewStockMov = new DataView(tblStockMov);
            int local;
            foreach (DataRowView fila in viewStockMov)
            {
                local = Convert.ToInt32(fila["OrigenMSTK"].ToString());
                DataRow foundRow = tblLocales.Rows.Find(local);
                fila["Origen"] = foundRow[1].ToString();
                local = Convert.ToInt32(fila["DestinoMSTK"].ToString());
                DataRow foundRow2 = tblLocales.Rows.Find(local);
                fila["Destino"] = foundRow2[1].ToString();

            }
            dgvStockMov.AllowUserToAddRows = false;
            dgvStockMov.DataSource = dsStockMov;
            dgvStockMov.DataMember = dsStockMov.Tables[0].TableName;
            dgvStockMov.Columns["CompensaMSTK"].Visible = false;
            dgvStockMov.Columns["OrigenMSTK"].Visible = false;
            dgvStockMov.Columns["DestinoMSTK"].Visible = false;
            if (tipo == "compensaciones")
            {
                dgvStockMov.Columns["Origen"].Visible = false;
                dgvStockMov.Columns["Destino"].HeaderText = "Local";
            }
            dgvStockMov.Columns["IdMovMSTK"].HeaderText = "Nº mov.";
            dgvStockMov.Columns["FechaMSTK"].HeaderText = "Fecha";
            dgvStockMov.Columns["DestinoMSTK"].Visible = false;
            dgvStockMov.ReadOnly = true;
            dgvStockDet.DataSource = dsStockMov;
            dgvStockDet.DataMember = "StockMov.StockMovDetalle";
            dgvStockDet.Columns["IdMovMSTKD"].Visible = false;
            dgvStockDet.Columns["CompensaMSTKD"].Visible = false;
            dgvStockDet.Columns["OrigenMSTKD"].Visible = false;
            dgvStockDet.Columns["DestinoMSTKD"].Visible = false;
            dgvStockDet.Columns["IdMSTKD"].HeaderText = "Nº mov.";
            dgvStockDet.Columns["IdArticuloMSTKD"].HeaderText = "Artículo";
            dgvStockDet.Columns["DescripcionART"].HeaderText = "Descripción";
            dgvStockDet.Columns["CantidadMSTKD"].HeaderText = "Cantidad";
            dgvStockDet.ReadOnly = true;
            Cursor.Current = Cursors.Arrow;
        }

        private void btnModifcar_Click(object sender, EventArgs e)
        {
            frmStockComp frm = new frmStockComp();
            frm.PK = dgvStockMov.CurrentRow.Cells["IdMovMSTK"].Value.ToString();
            frm.ShowDialog();
        }

        private void btnBorrar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Desea borrar este registro y todos los movimientos relacionados?", "NcSoft",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Stop) == DialogResult.Yes)
            {
                Cursor.Current = Cursors.WaitCursor;
                PK = Convert.ToInt32(dgvStockMov.CurrentRow.Cells["IdMovMSTK"].Value.ToString());
                accionProgress = "grabar";
                formularioOrigen = "frmStockMov_borrar";
                progreso = new frmProgress(PK, formularioOrigen, accionProgress, ref codigoError);
                progreso.ShowDialog();
                if (codigoError != null)
                {
                    Close();
                    return;
                }
                viewStockMov.RowFilter = "IdMovMSTK = '" + PK + "'";
                foreach (DataRowView row in viewStockMov)
                {
                    row.Delete();
                }
                tblStockMov.AcceptChanges();
                Cursor.Current = Cursors.Arrow;
            }
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            Close();
        }



    }
}
